perf(libstore/derivation-builder): pre-compute outputGraph for linear complexity #14540
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
Build the output reference graph and inverse output map before running
topoSort, avoiding quadratic complexity when determining which outputs
reference each other. This fixes the FIXME comment about building the
inverted map up front.
The outputGraph (StorePath → StorePathSet) maps each output to its
references, and will be reused in future commits to generate detailed
cycle error messages showing which files contain problematic references.
Adapted from Lix commit 10c04ce84.
Change-Id: Ibdd46e7b2e895bfeeebc173046d1297b41998181
Co-Authored-By: Maximilian Bosch [email protected]
Context
Add 👍 to pull requests you find important.
The Nix maintainer team uses a GitHub project board to schedule and track reviews.